/* eslint-disable no-inner-declarations */
/* eslint-disable no-unused-vars */

/*
------分数注意事项-----
本次测试满分为100(最多100分), 有4道加分题; 答案不够完整或者有错误当题0分处理;

------分数处理-----
(0-60]: 不及格, 处理: 提供第二份不同试卷晚自习的时候重新考试, 并在第二天晚自习时间单独进行测试题提问(大部分都回答不上则采用手抄试卷方案);

(60-75]: 良良, 处理: 晚自习时间单独进行测试题提问(大部分都回答不上则采用手抄试卷方案);

(75-90]: 良好, 处理: 放你一马, 好好复习;

(90-100]: 优秀, 处理: 好好好, 继续保持;
*/

// 1.JS延迟加载的方式有哪些？（5）
//设置延时计时器
// 2.前端 JavaScript 中的 ECMAScript、DOM、BOM 的含义；（5）

// 4.如何进行数据类型的判断？（5）
//typeof(元素) 返回元素类型
//元素 instanceof 构造函数（如String,Number...）,返回布尔型
//Object.prototype.toString.call(元素) ,返回[object 构造函数]
// 5.null 和 undefined 的区别？什么时候会得到 undefined？（5）
//null是空值，undefined 表示没有被赋值。
//变量在输出前没有被赋值；函数没设置返回值时，输出它的返回值
// 6.如何理解 null == undefined 返回 true，null === undefined 返回 false？（5）
//变量的未定义时它的值是null，所以null == undefined 返回 true
// null是null类型，undefined是undefined 类型，两者类型不同，所以null === undefined 返回 false
// 7.使用 continue 或 break 终止循环时，两种方式的区别是？（5）
// continue：结束本次循环
// break：跳出当前循环
// 8.如何判断字符串内是否包含指定字符？（5）
function f8(arr,a) {
    for(let i=0;i<arr.length;i++){
    if(a===arr[i])return true
    }
    return false
}
//f8('123','2')
// 9.请尽量列举出数组的方法，并且注明哪些方法会修改原数组，哪些不会；（5）
//会：splice,push,pop,shift,unshift
//不会：forEach,map,slice,includes,indexOf,lastIndexOf,join,some,every,reduce,reverse,sort,concat
// 10. 请写出下面语句的输出结果：（5）
// let bar = true, number = 0;
// console.log(bar + 0);//1
// console.log(bar + "xyz");//'truexyz'
// console.log(bar + true);//2
// console.log(+true);//1
// console.log(!'bluej');//flase
// console.log(number++);//0
// console.log(++number);//2
// console.log(number);//2

// 11. 根据用户输入时间实现倒计时(还剩x天x时x分x秒)，输入时间格式错误时要有错误提示（5）
// window.prompt("请输入目标时间");
// let t = new Date(window.prompt("请输入目标时间")).getTime();
// let t
// while (t===undefined) {
//     t =prompt("请输入目标时间")
//     //if(f(t)){}//用函数判断格式正确与否
//   }
function f11(t) {
    let d,h,m,s
    t= (new Date(t).getTime()-Date.now())/1000//秒
    console.log(t);
    d=Math.floor(t/60/60/24)
    h=Math.floor((t/60/60)%24)
    m=((t/60)%60).toFixed(0)
    s=parseInt(t%60)
    console.clear()
    return'还剩'+d+'天'+h+'时'+m+'分'+s+'秒'
}
// let set=setInterval(function(){
//     console.log(f11(t));
// },1000)
// 12.输出从小到大排序好的五个不重复的随机"素数",范围[10-58)；（10）
// 质数也叫素数是指在大于1的自然数中，除了1和它本身以外不再有其他因数的自然数，不能被任何整数整除的数。
    function f12(){
    for(let i=0;i<5;i++){
        let n=Math.floor(10+Math.random()*48)
        function f(n){
        for(let i=2;i<n;i++){
            if(parseInt(n%i)==n%i)return false
        }
        return true
        }
        let a=[]
        if(f(n))a.push(n)
        a=a.sort(function(a,b){
        return a-b
        })
        a.forEach(function(v){
        console.log(v);
        })
    }
    }

// 13.把下面数组成员排序打乱；（5）
function f13(){
let arr13 = [10, 20, 30, 40, 50, 60];
let newArr2 = []; // 打乱之后的数组
for (let i = 0; i < arr13.length; i++) {
    let n=Math.floor((Math.random()*6))
    if(!newArr2.includes(arr13[n]))newArr2.push(arr13[n])
    else{i--}
}
console.log(newArr2);
}
//f13()
// 14. 将多个数组进行去重合并；（10）
function f14(){
let arr140 = [1, 2, 3],
    arr141 = [2, 3, 4, 5];
arr140=arr140.concat(arr141)
arr140=arr140.filter(function(v,i){
    return i==arr140.indexOf(v)
})
console.log(arr140);
}
//f14()
// 15. 找出数组 arr=[1, 2, 3, "a", 4, "a", 2, 4, "a"] 中重复出现过的元素,并用数组将重复元素装起来输出,并且统计每个元素出现的次数（10）
function f15(){
let arr15 = [1, 2, 3, 'a', 4, 'a', 2, 4, 'a'];
let obj = {},a=[];
a=arr15.filter(function(v,i){
    return i!=arr15.indexOf(v)
})
a=a.filter(function(v,i){
    return i==a.indexOf(v)
})
console.log('重复元素为',a);
// arr15.forEach(function(v){
//     if()
// })
}
//f15()
// 16. 找出数组中年龄小于18岁的女生的信息重新组成新的数组,并且将她们count变为现有的平方（10）
let arr16 = [
    {
    name: '111',
    sex: 'boy',
    age: 18,
    count: 20,
    },
    {
    name: '222',
    sex: 'girl',
    age: 17,
    count: 30,
    },
    {
    name: '333',
    sex: 'boy',
    age: 16,
    count: 40,
    },
    {
    name: '444',
    sex: 'girl',
    age: 15,
    count: 50,
    },
    {
    name: '555',
    sex: 'boy',
    age: 20,
    count: 60,
    },
    {
    name: '666',
    sex: 'girl',
    age: 13,
    count: 70,
    },
    {
    name: '777',
    sex: 'boy',
    age: 14,
    count: 80,
    },
];
function f16(arr16){
    arr16=arr16.map(function(v){
    if(v.age<18)v.count=v.count*v.count
    })
    console.log(arr16);
}
//f16(arr16)
// 17. 实现一个深克隆函数 (加分题 5)

// 18. 实现一个数组的reduce方法 (加分题 5)
// function f18(cb,a){
//     if(a===undefined){}
// }
// 19. 写出强制转换的方法有哪些 (加分题 5)

// 20. 如何判断一个对象是否为空对象的3种方法 (加分题 5)